home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-09-16 | 11.5 KB | 373 lines | [TEXT/CCL2] |
- #|
- /************************************************************
-
- Created: Wednesday, August 28, 1991 at 1:56 AM
- MoviesFormat.h
- C Interface to the Macintosh Libraries
-
-
- Copyright Apple Computer, Inc. 1991
- All rights reserved
-
- ************************************************************/
- |#
-
- (in-package :traps)
-
- (require-interface 'Movies)
-
- (defconstant $kMovieVersion 0) ; /* version number of the format here described */
-
- (defrecord MoviesUserData
- (size :long) ; /* size of this user data */
- (type :long) ; /* type of user data */
- (data (array :character 1))) ; /* the user data */
-
- (defrecord UserDataAtom
- (size :long)
- (type long)
- (userData (array :MoviesUserData 1)))
-
- #|
- /*
- struct SampleDescription {
- long size;
- long type;
- long resvd1;
- short resvdA;
- short dataRefBlobId;
- };
- typedef struct SampleDescription SampleDescription;
- */
- |#
-
- (defrecord SampleDescriptionAtom
- (size :long)
- (type :long) ; /* = 'stsd' */
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (numEntries :long)
- (sampleDescTable (:array :SampleDescription 1)))
-
- (defrecord TimeToSampleNum
- (sampleCount :long)
- (sampleDuration :TimeValue))
-
- (defrecord TimeToSampleNumAtom
- (size :long)
- (type :long) ; /* = 'stts' */
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (numEntries :long)
- (timeToSampleNumTable (:array :TimeToSampleNum 1)))
-
- (defrecord SyncSampleAtom
- (size :long)
- (type :long) ; /* = 'stss' */
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (numEntries :long)
- (syncSampleTable (:array :long 1)))
-
- (defrecord SampleToChunk
- (firstChunk :long)
- (samplesPerChunk :long)
- (sampleDescriptionID :long))
-
- (defrecord SampleToChunkAtom
- (size :long)
- (type :long) ; /* = 'stsc' */
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (numEntries :long)
- (sampleToChunkTable (:array :SampleToChunk 1)))
-
- (defrecord ChunkOffsetAtom
- (size :long)
- (type :long) ; /* = 'stco' */
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (numEntries :long)
- (chunkOffsetTable (:array :long 1)))
-
- (defrecord SampleSizeAtom
- (size :long)
- (type :long) ; /* = 'stsz' */
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (sampleSize :long)
- (numEntries :long)
- (sampleSizeTable (:array :long 1)))
-
- (defrecord SampleTableAtom
- (size :long)
- (type :long) ; /* = 'stbl' */
- (sampleDescription :SampleDescriptionAtom)
- (timeToSampleNum :TimeToSampleNumAtom)
- (sampleToChunk :SampleToChunkAtom)
- (syncSample :SyncSampleAtom)
- (sampleSize :SampleSizeAtom)
- (chunkOffset :ChunkOffsetAtom))
-
- (defrecord PublicHandlerInfo
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (componentType :long)
- (componentSubType :long)
- (componentManufacturer :long)
- (componentFlags :long)
- (componentFlagsMask :long)
- (componentName (:array :character 1)))
-
- (defrecord HandlerAtom
- (size :long)
- (type :long) ; /* = 'hdlr' */
- (hInfo :PublicHandlerInfo))
-
- (defrecord DataRefAtom
- (size :long)
- (type :long)
- (flags :long) ; /* 1 byte of version / 3 bytes of flags (contains the dataRef attributes) */
- (dataRefData (:array :character 1))) ; /* for the current data handlers, this is an alias */
-
- (defrecord DataRefContainerAtom
- (size :long)
- (type :long)
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (numEntries :long)
- (dataRefs (:array :DataRefAtom 1)))
-
- (defrecord DataInfoAtom
- (size :long)
- (type :long) ; /* = 'dinf' */
- (dataRef :DataRefContainerAtom))
-
- (defrecord MatteCompressedAtom
- (size :long)
- (type :long)
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (matteImageDescription :ImageDescription)
- (matteData (:array :character 1)))
-
- (defrecord MatteAtom
- (size :long)
- (type :long)
- (aCompressedMatte :MatteCompressedAtom))
-
- (defrecord RgnAtom
- (size :long)
- (type :long)
- (rgnSize :short)
- (rgnBBox :Rect)
- (data (:array :character 1)))
-
- (defrecord ClippingAtom
- (size :long)
- (type :long)
- (aRgnClip :RgnAtom))
-
- (defrecord VideoMediaInfoHeader
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (graphicsMode :short) ; /* for QD - transfer mode */
- (opColorRed :short) ; /* opcolor for transfer mode */
- (opColorGreen :short)
- (opColorBlue :short))
-
- (defrecord VideoMediaInfoHeaderAtom
- (size :long) ; /* size of Media info */
- (type :long) ; /* = 'vmhd' */
- (vmiHeader :VideoMediaInfoHeader))
-
- (defrecord VideoMediaInfo
- (size :long) ; /* size of Media info */
- (type :long) ; /* = 'minf' */
- (header :VideoMediaInfoHeaderAtom)
- (dataHandler :HandlerAtom)
- (dataInfo :DataInfoAtom)
- (sampleTable :SampleTableAtom))
-
- (defrecord SoundMediaInfoHeader
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (balance :short)
- (rsrvd :short))
-
- (defrecord SoundMediaInfoHeaderAtom
- (size :long) ; /* size of Media info */
- (type :long) ; /* = 'vmhd' */
- (smiHeader :SoundMediaInfoHeader))
-
- (defrecord SoundMediaInfo
- (size :long) ; /* size of Media info */
- (type :long) ; /* = 'minf' */
- (header :SoundMediaInfoHeaderAtom)
- (dataHandler :HandlerAtom)
- (dataReference :DataRefAtom)
- (sampleTable :SampleTableAtom))
-
- (defrecord MediaInfo
- (size :long)
- (type :long)
- ;/* whatever data the media handler needs goes here */
- )
-
- #|
- /***********************
- * Media Directory Structures
- ***********************/
- |#
-
- (defrecord MediaHeader
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (creationTime :long) ; /* seconds since Jan 1904 when directory was created */
- (modificationTime :long) ; /* seconds since Jan 1904 when directory was appended */
- (timeScale :TimeValue) ; /* start time for Media (Media time) */
- (duration :TimeValue) ; /* length of Media (Media time) */
- (language :short)
- (quality :short))
-
- (defrecord MediaHeaderAtom
- (size :long)
- (type :long)
- (header :MediaHeader))
-
- (defrecord MediaDirectory
- (size :long)
- (type :long) ; /* = 'mdia' */
- (mediaHeader :MediaHeaderAtom) ; /* standard Media information */
- (mediaHandler :HandlerAtom)
- (mediaInfo :MediaInfo))
-
- #|
- /***********************
- * Track Structures
- ***********************/
- |#
-
- (defconstant $TrackEnable (ash 1 0))
- (defconstant $TrackInMovie (ash 1 1))
- (defconstant $TrackInPreview (ash 1 2))
- (defconstant $TrackInPoster (ash 1 3))
-
- (defrecord TrackHeader
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (creationTime :long) ; /* seconds since Jan 1904 when directory was created */
- (modificationTime :long) ; /* seconds since Jan 1904 when directory was appended */
- (trackID :long)
- (reserved1 :long)
- (duration :TimeValue) ; /* length of track (track time) */
- (reserved2 :long)
- (reserved3 :long)
- (layer :short)
- (alternateGroup :short)
- (volume :short)
- (reserved4 :short)
- (matrix :MatrixRecord)
- (trackWidth :Fixed)
- (trackHeight :Fixed))
-
- (defrecord TrackHeaderAtom
- (size :long) ; /* size of track header */
- (type :long) ; /* = 'tkhd' */
- (header :TrackHeader))
-
- (defrecord EditListType
- (trackDuration :TimeValue)
- (mediaTime :TimeValue)
- (mediaRate :Fixed))
-
- (defrecord EditListAtom
- (size :long)
- (type :long) ; /* = elst */
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (numEntries :long)
- (editListTable (:array :EditListType 1)))
-
- (defrecord EditsAtom
- (size :long)
- (type :long) ; /* = edts */
- (editList :EditListAtom))
-
- (defrecord TrackDirectory
- (size :long)
- (type :long) ; /* = 'trak' */
- (trackHeader :TrackHeaderAtom) ; /* standard track information */
- (trackClip :ClippingAtom)
- (edits :EditsAtom)
- (media :MediaDirectory)
- (userData :UserDataAtom) ; /* space for extending with new data types */
- )
-
- (defrecord MovieHeader
- (flags :long) ; /* 1 byte of version / 3 bytes of flags */
- (creationTime :long) ; /* seconds since Jan 1904 when directory was created */
- (modificationTime :long) ; /* seconds since Jan 1904 when directory was appended */
-
- ;/* Time specifications */
- (timeScale :TimeValue)
- (duration :TimeValue)
- (preferredRate :Fixed) ; /* rate at which to play this movie */
- (preferredVolume :short) ; /* volume to play movie at */
- (reserved1 :short)
-
- ;/* Graphics specifications */
- (reserved2 :long)
- (reserved3 :long)
- (matrix :MatrixRecord)
-
- (previewTime :TimeValue) ; /* time in track the proxy begins (track time) */
- (previewDuration :TimeValue) ; /* how long the proxy lasts (track time) */
- (posterTime :TimeValue) ; /* time in track the proxy begins (track time) */
- (selectionTime :TimeValue) ; /* time in track the proxy begins (track time) */
- (selectionDuration :TimeValue) ; /* time in track the proxy begins (track time) */
- (currentTime :TimeValue) ; /* time in track the proxy begins (track time) */
- (nextTrackID :long) ; /* next value to use for a TrackID */
- )
-
- (defrecord MovieHeaderAtom
- (size :long)
- (type :long) ; /* = 'mvhd' */
- (header :MovieHeader))
-
- (defrecord MovieDirectory
- (size :long)
- (type :long) ; /* = 'moov' */
- (header :MovieHeaderAtom)
- (movieClip :ClippingAtom)
-
- ;/* Track Directories */
- (track (:array :trackDirectory 1))
-
- ;/* User data for Movie */
- (userData :UserDataAtom) ; /* space for user extensions */
- )
-
- ;/* Movie formats and tags */
- ;/* some system defined format IDs */
- (defconstant $MOVIE_TYPE :|moov|)
- (defconstant $TRACK_TYPE :|trak|)
- (defconstant $MEDIA_TYPE :|mdia|)
- (defconstant $VIDEO_TYPE :|vide|)
- (defconstant $SOUND_TYPE :|soun|)
-
- ;/* atom id's */
- (defconstant $MovieAID :|moov|)
- (defconstant $MovieHeaderAID :|mvhd|)
- (defconstant $ClipAID :|clip|)
- (defconstant $RgnClipAID :|crgn|)
- (defconstant $MatteAID :|matt|)
- (defconstant $MatteCompAID :|kmat|)
- (defconstant $TrackAID :|trak|)
- (defconstant $UserDataAID :|udta|)
- (defconstant $TrackHeaderAID :|tkhd|)
- (defconstant $EditsAID :|edts|)
- (defconstant $EditListAID :|elst|)
- (defconstant $MediaAID :|mdia|)
- (defconstant $MediaHeaderAID :|mdhd|)
- (defconstant $MediaInfoAID :|minf|)
- (defconstant $VideoMediaInfoHeaderAID :|vmhd|)
- (defconstant $SoundMediaInfoHeaderAID :|smhd|)
- (defconstant $DataInfoAID :|dinf|)
- (defconstant $DataRefAID :|dref|)
- (defconstant $SampleTableAID :|stbl|)
- (defconstant $STSampleDescAID :|stsd|)
- (defconstant $STTimeToSampAID :|stts|)
- (defconstant $STSyncSampleAID :|stss|)
- (defconstant $STSampleToChunkAID :|stsc|)
- (defconstant $HandlerAID :|hdlr|)
- (defconstant $STSampleSizeAID :|stsz|)
- (defconstant $STChunkOffsetAID :|stco|)
- (defconstant $DataRefContainerAID :|drfc|)
-